package com.upstairstechnology.oi.notification;

import java.io.IOException;
import java.util.Set;

import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;

import com.upstairstechnology.oi.determination.OutstandingIntegration;

/**
 * Represents a formula for notifying on outstanding integrations.
 * 
 * @author Jeff Jensen
 */
public interface NotificationStrategy {

    /**
     * Notify of the outstanding integrations.
     * 
     * @param oiSet
     *            The set of outstanding integrations to notify of.
     * @throws NoSuchProviderException
     *             When no transport exists for the configured transport.
     * @throws IOException
     *             When errors occur while processing the SCM system output or
     *             processing email notifications.
     * @throws MessagingException
     *             When errors occur sending emails.
     */
    void notify(Set<OutstandingIntegration> oiSet) throws IOException,
            MessagingException;

}
